package com.tedu.service.Ipml;

import com.tedu.common.exception.DeleteException;
import com.tedu.common.exception.ServiceException;
import com.tedu.noticedao.NoticeDao;
import com.tedu.pojo.NoticePojo;
import com.tedu.service.NoticeService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.util.List;


@Service//@Component和service一样表示业务层
public class NoticeServiceImpl implements NoticeService {
    //构建初始化日志对象（org.slf4j.*），门面模式对外提供一个接口
    static final Logger log=
            (Logger) LoggerFactory.getLogger(NoticeServiceImpl.class);
    //has a 的关系
   //@Autowired
    private NoticeDao noticeDao;
    /**
     * 可以不通过Autowired注入，直接用构造函数传参的方法构造
     * 当系统在创建NoticeServiceImpl对象时，系统底层会去找到NoticeDao
     * 然后利用反射拿到noticeDao的值为其创建对象实现类
     * */
    public NoticeServiceImpl(NoticeDao noticeDao){

        this.noticeDao=noticeDao;
    }
    @Override
    public int saveNotice(NoticePojo noticePojo) {
        int rows=noticeDao.insertNotice(noticePojo);
        return rows;
    }

    @Override
    public List<NoticePojo> findNotice(NoticePojo noticePojo) {
        long t1=System.currentTimeMillis();
        //大括号在这里是占位符，t1的值会传入大括号；可以多个占位符号和值
        log.info("method start {}",t1);
       List<NoticePojo>list=noticeDao.selectNotice(noticePojo);
       long t2=System.currentTimeMillis();
       log.info("method end {}",t2);
        return list;
    }

    @Override
    public int deleteNotice(Long... id) {
        int rows=noticeDao.deleteNotice(id);
        if(rows==0)
            throw new DeleteException("记录已经被删除");
        return rows;
    }

    @Override
    public NoticePojo findId(Long id) {
       NoticePojo noticePojo=noticeDao.selectById(id);
       if(noticePojo==null)
           throw new ServiceException("该对象已经消失了");
        return noticePojo;
    }

    @Override
    public int updateNotice(NoticePojo noticePojo) {
        int rows=noticeDao.updateNotice(noticePojo);

        return rows;
    }


}
